package com.example.demo.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.lang.reflect.Type;

/**
 * @Description TODO
 * @Author lililiang
 * @Date 21/03/02 09:16
 * @Version 1.0
 **/
@Data
/**
 @Document 作用在类，标记实体类为文档对象，一般有四个属性
 indexName：对应索引库名称
 type：对应在索引库中的类型(es7中不再支持type,每个index下只有_doc一个类型）
 shards：分片数量，默认1
 replicas：副本数量，默认1
 **/
@Document(indexName = "item")
public class Item {

    /**
     * @Id 作用在成员变量，标记一个字段作为id主键
     **/
    @Id
    private String id;
    /**
     * @Field 作用在成员变量，标记为文档的字段，并指定字段映射属性：
     * type：字段类型，取值是枚举：FieldType
     * index：是否索引，布尔类型，默认是true
     * store：是否存储，布尔类型，默认是false
     * analyzer：分词器名称：ik_max_word
     **/
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String title; //标题

    @Field(type = FieldType.Keyword)
    private String category;// 分类

    @Field(type = FieldType.Keyword)
    private String brand; // 品牌

    @Field(type = FieldType.Double)
    private Double price; // 价格

    @Field(index = false, type = FieldType.Keyword)
    private String images; // 图片地址

    public Item(String id, String title, String category, String brand, Double price, String images) {
        this.id = id;
        this.title = title;
        this.category = category;
        this.brand = brand;
        this.price = price;
        this.images = images;
    }
}
